const fs = require('fs');
const defVersion = '0.0.0.0';
const versionFileName = 'version.txt'; // 更明确地指出文件扩展名
const versionStep = 10;

function setVersion() {
	return new Promise((resolve, reject) => {
		try {
			let data = fs.readFileSync(`./${versionFileName}`, 'utf8'); // 使用同步读取
			let versionArr = data.split('.');
			versionArr = versionArr.map((seg) => parseInt(seg, 10)); // 映射为数字数组

			if (versionArr.some(isNaN)) { // 检查是否有非法数字
				console.log('检测到版本号不合法，重置版本号');
				versionArr = [0, 0, 0, 0];
			}

			versionArr[versionArr.length - 1] += 1; // 只增加最后一个段
			for (let i = versionArr.length - 1; i > 0; i--) { // 处理进位
				if (versionArr[i] >= versionStep) {
					versionArr[i] = 0;
					versionArr[i - 1] += 1;
				}
			}

			const newVersion = versionArr.join('.');
			fs.writeFileSync(`./${versionFileName}`, newVersion); // 使用同步写入
			resolve(newVersion);
		} catch (err) {
			if (err.code === 'ENOENT') { // 文件不存在
				console.log('检测到无版本文件，重新写入版本文件.....');
				fs.writeFileSync(`./${versionFileName}`, defVersion); // 使用同步写入
				resolve(defVersion);
			} else {
				reject(err);
			}
		}
	});
}
function getVersion() {
	return new Promise((resolve, reject) => {
		try {
			let data = fs.readFileSync(`./${versionFileName}`, 'utf8'); // 使用同步读取
			resolve(data);
		} catch (err) {
			if (err.code === 'ENOENT') { // 文件不存在
				console.log('检测到无版本文件，重新写入版本文件.....');
				fs.writeFileSync(`./${versionFileName}`, defVersion); // 使用同步写入
				resolve(defVersion);
			} else {
				reject(err);
			}
		}
	});
}
module.exports = {
	version: setVersion,
	getVersion
};
